图像错切

简短说明

文件: \examples\Processing\Geometry\ShearLine\LineShear_V02.va

默认平台: mE5-MA-VCL

简要说明

带有线性插值的线剪切示例。

在此示例(位于 \examples\Processing\Geometry\ShearLine\LineShear_V02.va 下)中,实现了针对线扫描相机的线剪切。 如果相机的安装方向与物体的预定扫描方向不一致,该设计可以补偿扫描物体中产生的 偏移 (参见图 328)。此处以在整个图像宽度(此处为 1024 像素)内 y 方向产生 10 像素的线位移为例。

相机未对准导致的扫描对象倾斜

图 328. 相机未对准导致的扫描对象倾斜


在图 329 中可以看到基本设计结构: 来自相机算子的 1D 图像的每个像素都会在 HierarchicalBox LineShear 中根据其 x 坐标在 y 方向上进行剪切。单行通过算子 SplitImage:2DImage 组合成 2D 图像。纠正后的图像 通过算子 DmaToPC 发送到 PC。

基本设计结构

图 329. 基本设计结构


在图 330 中可以看到 HierarchicalBox LineShear 的内容。 此处,每个像素的前面 N-1 个行邻居(此处为 31)写入一个 Nx1 核中。

HierarchicalBox LineShear 的内容

图 330. HierarchicalBox LineShear 的内容


该列的每个 8 位像素与其前一个相邻像素(通过算子 KernelRemap:ShiftedKernel 找到)合并 为一个 16 位像素。为此,请参阅图 331 中的 HierarchicalBox ExtractInteger 的内容。在 HierarchicalBox Select(参见图 332)中,每个像素的新像素值是 通过算子 CASE 根据移动(纠正)后的整数 y 位置进行选择的。

HierarchicalBox ExtractInteger 的内容

图 331. HierarchicalBox ExtractInteger 的内容


HierarchicalBox Select 的内容

图 332. HierarchicalBox Select 的内容


每个像素的纠正后 y 位置是在 HierarchicalBox TransformedYCoordinate 中计算的(参见图 329)。该框的内容显示在图 333 中。

HierarchicalBox TransformedYCoordinate 的内容

图 333. HierarchicalBox TransformedYCoordinate 的内容


通过算子 Coordinate_X 获取每个像素的 x 位置。可以针对负倾斜斜率“反转”x 位置 (通过算子 Const: NegativeSlope 和 IF 选择)。通过算子 CONST: DeltaX 定义相机的对准误差:此常数决定了每隔多少个像素在 y 方向执行一次单像素偏移。通过算子 SelectBitField: Integer 和 SelectBitField: Fractional 分离每个像素的纠正后 y 坐标的整数和小数部分。在此示例中,确定了 6 个小数 位 (参见算子 ShiftLeft:Mult64)。每个 y 坐标的小数部分是执行线性插值所必需的,该插值在 包含于框 ExtractFractional 中的 HierarchicalBox Interpolation 中执行(参见图 330)。 您可以在示例中 HierarchicalBox Interpolation 的注释中找到有关插值算法的更多信息。 在图 334 中,您可以看到上述操作得出的纠正后图像。

移位纠正后的图像

图 334. 移位校正后的图像